Шаг 6. Переключаемся на удалённую ветку
Это редкий кейс, и про него немногие знают. Дело в том, что с приходом команды git pull переключаться на удалённую ветку нет смысла. Но мы всё равно в образовательных целях расскажем про это, чтобы вы понимали, что такая возможность есть.
Обычно потребность в переключении на удалённую ветку появляется, когда разработчики используют команду git fetch. Если говорить официальным языком, данная команда синхронизирует локальные и удалённые ссылочные объекты. Простыми словами, она лишь затягивает изменения с удалённой ветки, но при этом не обновляет рабочую копию. Чтобы её обновить, нужно использовать git merge.
Про
git fetchмы подробно поговорим в восьмом разделе.
Чтобы посмотреть, какие изменения были затянуты, порой нужно перейти на удалённую ветку — именно туда они и затягиваются. Это можно сделать несколькими способами:
- через команду
git checkout <название-ветки>; - через
git switch --detach <название-ветки>.
Для начала посмотрим с помощью команды git branch -r удалённые ветки.
Для нас доступна только одна удалённая ветка — origin/main. На неё мы и будем переключаться с помощью команды git switch --detach origin/main.
После переключения на удалённую ветку Git выдал сообщение, что указатель HEAD установлен на последний коммит с хэшем e6d675c. Как видим, вместо нормального названия origin/main в синих скобках установлен сокращённый хэш последнего коммита.
Опция --detach отвечает за переход в состояние detached HEAD. В этом состоянии указатель HEAD ссылается на последний коммит (в данном случае), а не на ветку. Поэтому Git и вывел такое сообщение после использования команды с опцией --detach.
Но зачем нам это состояние и в чём его суть? Мы находимся в ветке удалённого репозитория, а не локального. И если мы сейчас начнём вносить изменения и делать коммиты в ней, то они не сохранятся при повторном использовании команды git fetch. Если углубляться в теорию, то в скрытой директории .git есть ещё одна директория origin с вложенным файлом main, то есть названием нашей ветки. В данном файле сейчас находится хэш коммита, на который указывает ветка origin/main. Так вот, при повторном использовании команды git fetch данный хэш перезапишется, если на ветке удалённого репозитория существуют коммиты, которых нет в локальном репозитории. После этого все коммиты, которые вы сделали самостоятельно на этой ветке, в локальном репозитории будут удалены. Поэтому вносить какие-то изменения и делать коммиты в ней не имеет смысла.
Вернёмся назад на локальную ветку с помощью команды git switch -.
Возможно, у вас сейчас появилось ощущение, будто вы открыли книгу на 500 странице и ничего не поняли. Ничего страшного. Просто воспринимайте этот материал как интересное чтиво. Запишите команды и отложите их до лучших времён. Когда появится задача с переключением на удалённую ветку или вы захотите использовать git fetch, то откроете их и сразу вспомните, как и что делать.